// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

#include "testing/crypto/ecc_testing.h"


const uint8_t ECC_PRIVKEY[] = {
	0x64,0x85,0x0c,0x50,0x94,0x58,0x9f,0x4b,0x7e,0x1a,0xd7,0x58,0x63,0x82,0xc8,0xbc,
	0xa5,0x16,0x96,0x6a,0x4e,0x87,0xd6,0xc6,0x23,0xa8,0x27,0xdc,0xb5,0x89,0x25,0x99
};

const size_t ECC_PRIVKEY_LEN = sizeof (ECC_PRIVKEY);

const char ECC_PUBKEY_PEM[] = "-----BEGIN PUBLIC KEY-----\n"
	"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE41H6Yzw3vubef2WO3b3W1THvnNa1"
	"FMIosQiLC+QpwwNnDijCsovQm8DkM6YjWql66zplFZUIrHreJzZx5EzeTg==\n"
	"-----END PUBLIC KEY-----\n";

const size_t ECC_PUBKEY_PEM_LEN = sizeof (ECC_PUBKEY_PEM);

const uint8_t ECC_PUBKEY_DER[] = {
	0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,0x01,0x06,0x08,0x2a,
	0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,0xe3,0x51,0xfa,0x63,0x3c,
	0x37,0xbe,0xe6,0xde,0x7f,0x65,0x8e,0xdd,0xbd,0xd6,0xd5,0x31,0xef,0x9c,0xd6,0xb5,
	0x14,0xc2,0x28,0xb1,0x08,0x8b,0x0b,0xe4,0x29,0xc3,0x03,0x67,0x0e,0x28,0xc2,0xb2,
	0x8b,0xd0,0x9b,0xc0,0xe4,0x33,0xa6,0x23,0x5a,0xa9,0x7a,0xeb,0x3a,0x65,0x15,0x95,
	0x08,0xac,0x7a,0xde,0x27,0x36,0x71,0xe4,0x4c,0xde,0x4e
};

const size_t ECC_PUBKEY_DER_LEN = sizeof (ECC_PUBKEY_DER);

const char ECC_PRIVKEY_PEM[] = "-----BEGIN EC PRIVATE KEY-----\n"
	"MHcCAQEEIGSFDFCUWJ9LfhrXWGOCyLylFpZqTofWxiOoJ9y1iSWZoAoGCCqGSM49"
	"AwEHoUQDQgAE41H6Yzw3vubef2WO3b3W1THvnNa1FMIosQiLC+QpwwNnDijCsovQ"
	"m8DkM6YjWql66zplFZUIrHreJzZx5EzeTg==\n"
	"-----END EC PRIVATE KEY-----\n";

const size_t ECC_PRIVKEY_PEM_LEN = sizeof (ECC_PRIVKEY_PEM);

const uint8_t ECC_PRIVKEY_DER[] = {
	0x30,0x77,0x02,0x01,0x01,0x04,0x20,0x64,0x85,0x0c,0x50,0x94,0x58,0x9f,0x4b,0x7e,
	0x1a,0xd7,0x58,0x63,0x82,0xc8,0xbc,0xa5,0x16,0x96,0x6a,0x4e,0x87,0xd6,0xc6,0x23,
	0xa8,0x27,0xdc,0xb5,0x89,0x25,0x99,0xa0,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,
	0x03,0x01,0x07,0xa1,0x44,0x03,0x42,0x00,0x04,0xe3,0x51,0xfa,0x63,0x3c,0x37,0xbe,
	0xe6,0xde,0x7f,0x65,0x8e,0xdd,0xbd,0xd6,0xd5,0x31,0xef,0x9c,0xd6,0xb5,0x14,0xc2,
	0x28,0xb1,0x08,0x8b,0x0b,0xe4,0x29,0xc3,0x03,0x67,0x0e,0x28,0xc2,0xb2,0x8b,0xd0,
	0x9b,0xc0,0xe4,0x33,0xa6,0x23,0x5a,0xa9,0x7a,0xeb,0x3a,0x65,0x15,0x95,0x08,0xac,
	0x7a,0xde,0x27,0x36,0x71,0xe4,0x4c,0xde,0x4e
};

const size_t ECC_PRIVKEY_DER_LEN = sizeof (ECC_PRIVKEY_DER);

/* The ECDH secret generated using the test private and public key (ECC_PRIVKEY and ECC_PUBKEY). */
const uint8_t ECC_DH_SECRET[] = {
	0x90,0xe8,0xe4,0xc1,0x88,0x92,0x78,0x18,0x15,0x19,0x39,0xb2,0xde,0x44,0x28,0xa5,
	0x87,0xad,0xf4,0x70,0x62,0x8e,0x6d,0xaa,0x05,0x73,0x9b,0x99,0x4a,0x32,0x52,0x26
};

const size_t ECC_DH_SECRET_LEN = sizeof (ECC_DH_SECRET);

const uint8_t ECC_PRIVKEY_LEADING_ZERO[] = {
	0x8d,0x34,0x8f,0xe9,0x82,0xb3,0x51,0x04,0xec,0x10,0x8c,0x44,0x5f,0x09,0xbf,0x51,
	0x41,0x74,0xf4,0x9f,0x0b,0xf6,0xd2,0x83,0x1e,0xdf,0x88,0x10,0xfe,0xb2,0x3d,0x8f
};

const size_t ECC_PRIVKEY_LEADING_ZERO_LEN = sizeof (ECC_PRIVKEY_LEADING_ZERO);

const char ECC_PUBKEY_LEADING_ZERO_PEM[] = "-----BEGIN PUBLIC KEY-----\n"
	"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECPF1ZY7N5X4S0mXW3L+7QpNrLZ1O"
	"1NW/GsEIkedMYO3IgND5QpeTTckuCtlMLHyzeN/0lyuOlVzcgu7AogFxYQ==\n"
	"-----END PUBLIC KEY-----\n";

const size_t ECC_PUBKEY_LEADING_ZERO_PEM_LEN = sizeof (ECC_PUBKEY_LEADING_ZERO_PEM);

const uint8_t ECC_PUBKEY_LEADING_ZERO_DER[] = {
	0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,0x01,0x06,0x08,0x2a,
	0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,0x08,0xf1,0x75,0x65,0x8e,
	0xcd,0xe5,0x7e,0x12,0xd2,0x65,0xd6,0xdc,0xbf,0xbb,0x42,0x93,0x6b,0x2d,0x9d,0x4e,
	0xd4,0xd5,0xbf,0x1a,0xc1,0x08,0x91,0xe7,0x4c,0x60,0xed,0xc8,0x80,0xd0,0xf9,0x42,
	0x97,0x93,0x4d,0xc9,0x2e,0x0a,0xd9,0x4c,0x2c,0x7c,0xb3,0x78,0xdf,0xf4,0x97,0x2b,
	0x8e,0x95,0x5c,0xdc,0x82,0xee,0xc0,0xa2,0x01,0x71,0x61
};

const size_t ECC_PUBKEY_LEADING_ZERO_DER_LEN = sizeof (ECC_PUBKEY_LEADING_ZERO_DER);

const char ECC_PRIVKEY_LEADING_ZERO_PEM[] = "-----BEGIN EC PRIVATE KEY-----\n"
	"MHcCAQEEII00j+mCs1EE7BCMRF8Jv1FBdPSfC/bSgx7fiBD+sj2PoAoGCCqGSM49"
	"AwEHoUQDQgAECPF1ZY7N5X4S0mXW3L+7QpNrLZ1O1NW/GsEIkedMYO3IgND5QpeT"
	"TckuCtlMLHyzeN/0lyuOlVzcgu7AogFxYQ==\n"
	"-----END EC PRIVATE KEY-----\n";

const size_t ECC_PRIVKEY_LEADING_ZERO_PEM_LEN = sizeof (ECC_PRIVKEY_LEADING_ZERO_PEM);

const uint8_t ECC_PRIVKEY_LEADING_ZERO_DER[] = {
	0x30,0x77,0x02,0x01,0x01,0x04,0x20,0x8d,0x34,0x8f,0xe9,0x82,0xb3,0x51,0x04,0xec,
	0x10,0x8c,0x44,0x5f,0x09,0xbf,0x51,0x41,0x74,0xf4,0x9f,0x0b,0xf6,0xd2,0x83,0x1e,
	0xdf,0x88,0x10,0xfe,0xb2,0x3d,0x8f,0xa0,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,
	0x03,0x01,0x07,0xa1,0x44,0x03,0x42,0x00,0x04,0x08,0xf1,0x75,0x65,0x8e,0xcd,0xe5,
	0x7e,0x12,0xd2,0x65,0xd6,0xdc,0xbf,0xbb,0x42,0x93,0x6b,0x2d,0x9d,0x4e,0xd4,0xd5,
	0xbf,0x1a,0xc1,0x08,0x91,0xe7,0x4c,0x60,0xed,0xc8,0x80,0xd0,0xf9,0x42,0x97,0x93,
	0x4d,0xc9,0x2e,0x0a,0xd9,0x4c,0x2c,0x7c,0xb3,0x78,0xdf,0xf4,0x97,0x2b,0x8e,0x95,
	0x5c,0xdc,0x82,0xee,0xc0,0xa2,0x01,0x71,0x61
};

const size_t ECC_PRIVKEY_LEADING_ZERO_DER_LEN = sizeof (ECC_PRIVKEY_LEADING_ZERO_DER);

/* The ECDH secret generated using the test public key (ECC_PUBKEY) and ECC_PRIVKEY_LEADING_ZERO. */
const uint8_t ECC_DH_SECRET_LEADING_ZERO[] = {
	0x00,0xf9,0xe6,0x54,0x32,0x73,0x2a,0x5e,0xf1,0x9d,0x9e,0xc2,0x1d,0xa2,0x65,0xfc,
	0x80,0xf4,0xea,0x92,0x51,0xbf,0x5b,0xa8,0xaa,0x48,0x2b,0xc2,0x0c,0x97,0x83,0x2e
};

const size_t ECC_DH_SECRET_LEADING_ZERO_LEN = sizeof (ECC_DH_SECRET_LEADING_ZERO);

const uint8_t ECC_PRIVKEY2[] = {
	0xd2,0xf4,0xeb,0x81,0xac,0x58,0xb0,0x63,0xd8,0xa1,0x1f,0x6a,0x39,0x7d,0x8a,0x43,
	0x31,0xa9,0x84,0xf7,0x93,0x09,0x9d,0xf1,0x10,0x10,0xca,0x47,0x3d,0xe5,0x39,0xc3
};

const size_t ECC_PRIVKEY2_LEN = sizeof (ECC_PRIVKEY2);

const char ECC_PUBKEY2_PEM[] = "-----BEGIN PUBLIC KEY-----\n"
	"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPra3dU2QpiePa79zgvzNTTzcMQpP"
	"brKg8U5tGbZ19Lz6VQd9eF4wc+5novqskm2P5kVtlEd99pgO6X1tDJ14ZA==\n"
	"-----END PUBLIC KEY-----\n";

const size_t ECC_PUBKEY2_PEM_LEN = sizeof (ECC_PUBKEY2_PEM);

const uint8_t ECC_PUBKEY2_DER[] = {
	0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,0x01,0x06,0x08,0x2a,
	0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,0x3e,0xb6,0xb7,0x75,0x4d,
	0x90,0xa6,0x27,0x8f,0x6b,0xbf,0x73,0x82,0xfc,0xcd,0x4d,0x3c,0xdc,0x31,0x0a,0x4f,
	0x6e,0xb2,0xa0,0xf1,0x4e,0x6d,0x19,0xb6,0x75,0xf4,0xbc,0xfa,0x55,0x07,0x7d,0x78,
	0x5e,0x30,0x73,0xee,0x67,0xa2,0xfa,0xac,0x92,0x6d,0x8f,0xe6,0x45,0x6d,0x94,0x47,
	0x7d,0xf6,0x98,0x0e,0xe9,0x7d,0x6d,0x0c,0x9d,0x78,0x64
};

const size_t ECC_PUBKEY2_DER_LEN = sizeof (ECC_PUBKEY2_DER);

const char ECC_PRIVKEY2_PEM[] = "-----BEGIN EC PRIVATE KEY-----\n"
	"MHcCAQEEINL064GsWLBj2KEfajl9ikMxqYT3kwmd8RAQykc95TnDoAoGCCqGSM49"
	"AwEHoUQDQgAEPra3dU2QpiePa79zgvzNTTzcMQpPbrKg8U5tGbZ19Lz6VQd9eF4w"
	"c+5novqskm2P5kVtlEd99pgO6X1tDJ14ZA==\n"
	"-----END EC PRIVATE KEY-----\n";

const size_t ECC_PRIVKEY2_PEM_LEN = sizeof (ECC_PRIVKEY2_PEM);

const uint8_t ECC_PRIVKEY2_DER[] = {
	0x30,0x77,0x02,0x01,0x01,0x04,0x20,0xd2,0xf4,0xeb,0x81,0xac,0x58,0xb0,0x63,0xd8,
	0xa1,0x1f,0x6a,0x39,0x7d,0x8a,0x43,0x31,0xa9,0x84,0xf7,0x93,0x09,0x9d,0xf1,0x10,
	0x10,0xca,0x47,0x3d,0xe5,0x39,0xc3,0xa0,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,
	0x03,0x01,0x07,0xa1,0x44,0x03,0x42,0x00,0x04,0x3e,0xb6,0xb7,0x75,0x4d,0x90,0xa6,
	0x27,0x8f,0x6b,0xbf,0x73,0x82,0xfc,0xcd,0x4d,0x3c,0xdc,0x31,0x0a,0x4f,0x6e,0xb2,
	0xa0,0xf1,0x4e,0x6d,0x19,0xb6,0x75,0xf4,0xbc,0xfa,0x55,0x07,0x7d,0x78,0x5e,0x30,
	0x73,0xee,0x67,0xa2,0xfa,0xac,0x92,0x6d,0x8f,0xe6,0x45,0x6d,0x94,0x47,0x7d,0xf6,
	0x98,0x0e,0xe9,0x7d,0x6d,0x0c,0x9d,0x78,0x64
};

const size_t ECC_PRIVKEY2_DER_LEN = sizeof (ECC_PRIVKEY2_DER);

/* The SHA256 signature for the string "Test". */
const uint8_t ECC_SIGNATURE_TEST[] = {
	0x30,0x46,0x02,0x21,0x00,0x86,0x1d,0x0e,0x39,0x20,0xdc,0xae,0x77,0xcc,0xb0,0x33,
	0x38,0xb7,0xd8,0x47,0xb9,0x7a,0x6b,0x65,0x3b,0xe2,0x72,0x52,0x8f,0x77,0x82,0x00,
	0x82,0x8f,0x6f,0xc5,0x9e,0x02,0x21,0x00,0xf8,0xf9,0x96,0xaf,0xd5,0xc5,0x50,0x16,
	0xa9,0x31,0x2d,0xad,0x1e,0xec,0x61,0x3a,0x80,0xe5,0x7a,0x1f,0xa0,0xc3,0x0c,0x35,
	0x41,0x00,0x96,0xcf,0x71,0x24,0x08,0x43
};

const size_t ECC_SIG_TEST_LEN = sizeof (ECC_SIGNATURE_TEST);

/* The SHA256 signature for the string "Test2". */
const uint8_t ECC_SIGNATURE_TEST2[] = {
	0x30,0x45,0x02,0x20,0x2b,0x87,0x03,0x1b,0x8b,0x5a,0xfb,0x46,0xa2,0xb3,0x30,0x6c,
	0xa7,0x92,0xd2,0x90,0x09,0xe3,0x67,0xa2,0xc8,0xa9,0xcd,0xac,0x60,0x1f,0x6d,0x3a,
	0x42,0xe5,0x44,0x57,0x02,0x21,0x00,0xec,0xe6,0xc7,0xd8,0xaa,0x48,0x6d,0x25,0x88,
	0x33,0x21,0xc7,0xd0,0x1e,0x66,0x8b,0xab,0xc7,0x9e,0xaf,0x6a,0x94,0x6e,0x56,0x6c,
	0x39,0x94,0x4f,0x6a,0x7c,0x7d,0x83
};

const size_t ECC_SIG_TEST2_LEN = sizeof (ECC_SIGNATURE_TEST2);

/* The SHA256 signature for the string "Nope". */
const uint8_t ECC_SIGNATURE_NOPE[] = {
	0x30,0x45,0x02,0x21,0x00,0x94,0x08,0x88,0xc0,0x03,0xd0,0x9c,0x20,0x65,0x4b,0xbe,
	0x47,0xf3,0x72,0xdf,0x2b,0x05,0x4a,0x84,0x4a,0xef,0x0f,0x2f,0xdb,0xb3,0xb2,0x15,
	0x98,0xfe,0x35,0x70,0x9a,0x02,0x20,0x50,0x46,0x0d,0x82,0xf2,0x2a,0x91,0x24,0x13,
	0xa4,0x60,0x9c,0x3e,0x45,0x6d,0xe0,0xff,0xd6,0x55,0xc0,0xe9,0x0b,0x90,0xf0,0xd8,
	0xc0,0xe0,0x71,0x2c,0xb2,0xe2,0x52
};

const size_t ECC_SIG_NOPE_LEN = sizeof (ECC_SIGNATURE_NOPE);

/* The SHA256 signature for the string "Bad". */
const uint8_t ECC_SIGNATURE_BAD[] = {
	0x30,0x45,0x02,0x21,0x00,0xb3,0x82,0xfc,0x21,0x57,0x66,0xf1,0xeb,0xb4,0x87,0x2f,
	0x94,0x53,0x62,0x06,0xa5,0x74,0xa5,0x89,0xa3,0x05,0x7c,0xb2,0x6c,0x4e,0x6d,0x5c,
	0x3b,0x38,0x9b,0xf0,0x03,0x02,0x20,0x64,0x91,0x2a,0x2d,0x6e,0x72,0xba,0x8a,0x30,
	0xfd,0x27,0xdf,0x43,0x41,0xd3,0xa5,0xf8,0xd3,0x90,0x87,0xf7,0x63,0xd3,0x3c,0x6d,
	0x56,0x6c,0xfc,0x89,0xa9,0x2a,0xaf
};

const size_t ECC_SIG_BAD_LEN = sizeof (ECC_SIGNATURE_BAD);

const uint8_t ECC384_PRIVKEY[] = {
	0x5d,0x57,0x6f,0x7d,0xd2,0x90,0xd7,0x94,0x53,0x02,0x74,0x38,0xb3,0xe6,0x81,0xa1,
	0x10,0xc5,0xd0,0x95,0x31,0x3d,0xcb,0x69,0x78,0x34,0x41,0x62,0x2f,0x87,0xc7,0x1e,
	0x12,0x80,0x4c,0xb0,0x97,0x2e,0x63,0xbd,0xff,0x8a,0x25,0x6b,0x63,0xd4,0x90,0x8d
};

const size_t ECC384_PRIVKEY_LEN = sizeof (ECC384_PRIVKEY);

const char ECC384_PUBKEY_PEM[] = "-----BEGIN PUBLIC KEY-----\n"
	"MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEz2uNmkh1qVoZiXIYpJRN7wqTzluLjfE3"
	"VAkXibzvadtsp572tktcE+08v+0LPfF+U7/0djExM6NYPBE96422t0dK41HQOCas"
	"7BE0MwQNxsN1N6GJ3U9mV3KsxTu2xrgM\n"
	"-----END PUBLIC KEY-----\n";

const size_t ECC384_PUBKEY_PEM_LEN = sizeof (ECC384_PUBKEY_PEM);

const uint8_t ECC384_PUBKEY_DER[] = {
	0x30,0x76,0x30,0x10,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,0x01,0x06,0x05,0x2b,
	0x81,0x04,0x00,0x22,0x03,0x62,0x00,0x04,0xcf,0x6b,0x8d,0x9a,0x48,0x75,0xa9,0x5a,
	0x19,0x89,0x72,0x18,0xa4,0x94,0x4d,0xef,0x0a,0x93,0xce,0x5b,0x8b,0x8d,0xf1,0x37,
	0x54,0x09,0x17,0x89,0xbc,0xef,0x69,0xdb,0x6c,0xa7,0x9e,0xf6,0xb6,0x4b,0x5c,0x13,
	0xed,0x3c,0xbf,0xed,0x0b,0x3d,0xf1,0x7e,0x53,0xbf,0xf4,0x76,0x31,0x31,0x33,0xa3,
	0x58,0x3c,0x11,0x3d,0xeb,0x8d,0xb6,0xb7,0x47,0x4a,0xe3,0x51,0xd0,0x38,0x26,0xac,
	0xec,0x11,0x34,0x33,0x04,0x0d,0xc6,0xc3,0x75,0x37,0xa1,0x89,0xdd,0x4f,0x66,0x57,
	0x72,0xac,0xc5,0x3b,0xb6,0xc6,0xb8,0x0c
};

const size_t ECC384_PUBKEY_DER_LEN = sizeof (ECC384_PUBKEY_DER);

const char ECC384_PRIVKEY_PEM[] = "-----BEGIN EC PRIVATE KEY-----\n"
	"MIGkAgEBBDBdV2990pDXlFMCdDiz5oGhEMXQlTE9y2l4NEFiL4fHHhKATLCXLmO9"
	"/4ola2PUkI2gBwYFK4EEACKhZANiAATPa42aSHWpWhmJchiklE3vCpPOW4uN8TdU"
	"CReJvO9p22ynnva2S1wT7Ty/7Qs98X5Tv/R2MTEzo1g8ET3rjba3R0rjUdA4Jqzs"
	"ETQzBA3Gw3U3oYndT2ZXcqzFO7bGuAw=\n"
	"-----END EC PRIVATE KEY-----\n";

const size_t ECC384_PRIVKEY_PEM_LEN = sizeof (ECC384_PRIVKEY_PEM);

const uint8_t ECC384_PRIVKEY_DER[] = {
	0x30,0x81,0xa4,0x02,0x01,0x01,0x04,0x30,0x5d,0x57,0x6f,0x7d,0xd2,0x90,0xd7,0x94,
	0x53,0x02,0x74,0x38,0xb3,0xe6,0x81,0xa1,0x10,0xc5,0xd0,0x95,0x31,0x3d,0xcb,0x69,
	0x78,0x34,0x41,0x62,0x2f,0x87,0xc7,0x1e,0x12,0x80,0x4c,0xb0,0x97,0x2e,0x63,0xbd,
	0xff,0x8a,0x25,0x6b,0x63,0xd4,0x90,0x8d,0xa0,0x07,0x06,0x05,0x2b,0x81,0x04,0x00,
	0x22,0xa1,0x64,0x03,0x62,0x00,0x04,0xcf,0x6b,0x8d,0x9a,0x48,0x75,0xa9,0x5a,0x19,
	0x89,0x72,0x18,0xa4,0x94,0x4d,0xef,0x0a,0x93,0xce,0x5b,0x8b,0x8d,0xf1,0x37,0x54,
	0x09,0x17,0x89,0xbc,0xef,0x69,0xdb,0x6c,0xa7,0x9e,0xf6,0xb6,0x4b,0x5c,0x13,0xed,
	0x3c,0xbf,0xed,0x0b,0x3d,0xf1,0x7e,0x53,0xbf,0xf4,0x76,0x31,0x31,0x33,0xa3,0x58,
	0x3c,0x11,0x3d,0xeb,0x8d,0xb6,0xb7,0x47,0x4a,0xe3,0x51,0xd0,0x38,0x26,0xac,0xec,
	0x11,0x34,0x33,0x04,0x0d,0xc6,0xc3,0x75,0x37,0xa1,0x89,0xdd,0x4f,0x66,0x57,0x72,
	0xac,0xc5,0x3b,0xb6,0xc6,0xb8,0x0c
};

const size_t ECC384_PRIVKEY_DER_LEN = sizeof (ECC384_PRIVKEY_DER);

const uint8_t ECC521_PRIVKEY[] = {
	0x51,0x3d,0xe6,0xfb,0xc9,0x59,0xe9,0x81,0x2f,0x16,0xb3,0x36,0xe7,0x11,0x02,0xd4,
	0x0c,0x61,0xf4,0x5d,0xf5,0xea,0x6a,0xab,0xa0,0xa7,0x7a,0x79,0x7e,0x80,0x79,0x31,
	0xca,0x2d,0x22,0x6b,0x7e,0x5b,0x63,0xe2,0xa8,0x93,0xf1,0xe2,0x7e,0xba,0x6c,0xe2,
	0xd0,0xea,0xfc,0x9b,0xa1,0x35,0xd6,0x23,0xfb,0x21,0x66,0x56,0x0c,0x34,0xc5,0x53,
	0x57
};

const size_t ECC521_PRIVKEY_LEN = sizeof (ECC521_PRIVKEY);

const char ECC521_PUBKEY_PEM[] = "-----BEGIN PUBLIC KEY-----\n"
	"MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQB4C0BmRbf1ex6TghwXUoByJ/GSxBK"
	"8lO4SNlJvEmEF3ho3RnM35NwBNq9M79LLoGCMwCAL/3QV8aVqk/1Mhzs6tAA/cHP"
	"sePmbaZQ3ITWN6Ih2SguYVJay+mVOdjDfUg25YK3TRte79MrgHafRQfwrXOF6CM/"
	"0oaazjUsJ5T5CUUw0lk=\n"
	"-----END PUBLIC KEY-----\n";

const size_t ECC521_PUBKEY_PEM_LEN = sizeof (ECC521_PUBKEY_PEM);

const uint8_t ECC521_PUBKEY_DER[] = {
	0x30,0x81,0x9b,0x30,0x10,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,0x01,0x06,0x05,
	0x2b,0x81,0x04,0x00,0x23,0x03,0x81,0x86,0x00,0x04,0x01,0xe0,0x2d,0x01,0x99,0x16,
	0xdf,0xd5,0xec,0x7a,0x4e,0x08,0x70,0x5d,0x4a,0x01,0xc8,0x9f,0xc6,0x4b,0x10,0x4a,
	0xf2,0x53,0xb8,0x48,0xd9,0x49,0xbc,0x49,0x84,0x17,0x78,0x68,0xdd,0x19,0xcc,0xdf,
	0x93,0x70,0x04,0xda,0xbd,0x33,0xbf,0x4b,0x2e,0x81,0x82,0x33,0x00,0x80,0x2f,0xfd,
	0xd0,0x57,0xc6,0x95,0xaa,0x4f,0xf5,0x32,0x1c,0xec,0xea,0xd0,0x00,0xfd,0xc1,0xcf,
	0xb1,0xe3,0xe6,0x6d,0xa6,0x50,0xdc,0x84,0xd6,0x37,0xa2,0x21,0xd9,0x28,0x2e,0x61,
	0x52,0x5a,0xcb,0xe9,0x95,0x39,0xd8,0xc3,0x7d,0x48,0x36,0xe5,0x82,0xb7,0x4d,0x1b,
	0x5e,0xef,0xd3,0x2b,0x80,0x76,0x9f,0x45,0x07,0xf0,0xad,0x73,0x85,0xe8,0x23,0x3f,
	0xd2,0x86,0x9a,0xce,0x35,0x2c,0x27,0x94,0xf9,0x09,0x45,0x30,0xd2,0x59
};

const size_t ECC521_PUBKEY_DER_LEN = sizeof (ECC521_PUBKEY_DER);

const char ECC521_PRIVKEY_PEM[] = "-----BEGIN EC PRIVATE KEY-----\n"
	"MIHcAgEBBEIAUT3m+8lZ6YEvFrM25xEC1Axh9F316mqroKd6eX6AeTHKLSJrfltj"
	"4qiT8eJ+umzi0Or8m6E11iP7IWZWDDTFU1egBwYFK4EEACOhgYkDgYYABAHgLQGZ"
	"Ft/V7HpOCHBdSgHIn8ZLEEryU7hI2Um8SYQXeGjdGczfk3AE2r0zv0sugYIzAIAv"
	"/dBXxpWqT/UyHOzq0AD9wc+x4+ZtplDchNY3oiHZKC5hUlrL6ZU52MN9SDblgrdN"
	"G17v0yuAdp9FB/Ctc4XoIz/ShprONSwnlPkJRTDSWQ==\n"
	"-----END EC PRIVATE KEY-----\n";

const size_t ECC521_PRIVKEY_PEM_LEN = sizeof (ECC521_PRIVKEY_PEM);

const uint8_t ECC521_PRIVKEY_DER[] = {
	0x30,0x81,0xdc,0x02,0x01,0x01,0x04,0x42,0x00,0x51,0x3d,0xe6,0xfb,0xc9,0x59,0xe9,
	0x81,0x2f,0x16,0xb3,0x36,0xe7,0x11,0x02,0xd4,0x0c,0x61,0xf4,0x5d,0xf5,0xea,0x6a,
	0xab,0xa0,0xa7,0x7a,0x79,0x7e,0x80,0x79,0x31,0xca,0x2d,0x22,0x6b,0x7e,0x5b,0x63,
	0xe2,0xa8,0x93,0xf1,0xe2,0x7e,0xba,0x6c,0xe2,0xd0,0xea,0xfc,0x9b,0xa1,0x35,0xd6,
	0x23,0xfb,0x21,0x66,0x56,0x0c,0x34,0xc5,0x53,0x57,0xa0,0x07,0x06,0x05,0x2b,0x81,
	0x04,0x00,0x23,0xa1,0x81,0x89,0x03,0x81,0x86,0x00,0x04,0x01,0xe0,0x2d,0x01,0x99,
	0x16,0xdf,0xd5,0xec,0x7a,0x4e,0x08,0x70,0x5d,0x4a,0x01,0xc8,0x9f,0xc6,0x4b,0x10,
	0x4a,0xf2,0x53,0xb8,0x48,0xd9,0x49,0xbc,0x49,0x84,0x17,0x78,0x68,0xdd,0x19,0xcc,
	0xdf,0x93,0x70,0x04,0xda,0xbd,0x33,0xbf,0x4b,0x2e,0x81,0x82,0x33,0x00,0x80,0x2f,
	0xfd,0xd0,0x57,0xc6,0x95,0xaa,0x4f,0xf5,0x32,0x1c,0xec,0xea,0xd0,0x00,0xfd,0xc1,
	0xcf,0xb1,0xe3,0xe6,0x6d,0xa6,0x50,0xdc,0x84,0xd6,0x37,0xa2,0x21,0xd9,0x28,0x2e,
	0x61,0x52,0x5a,0xcb,0xe9,0x95,0x39,0xd8,0xc3,0x7d,0x48,0x36,0xe5,0x82,0xb7,0x4d,
	0x1b,0x5e,0xef,0xd3,0x2b,0x80,0x76,0x9f,0x45,0x07,0xf0,0xad,0x73,0x85,0xe8,0x23,
	0x3f,0xd2,0x86,0x9a,0xce,0x35,0x2c,0x27,0x94,0xf9,0x09,0x45,0x30,0xd2,0x59
};

const size_t ECC521_PRIVKEY_DER_LEN = sizeof (ECC521_PRIVKEY_DER);
